iT邦幫忙

2022 iThome 鐵人賽

DAY 3
1

前言

今天會繼續介紹dart被應用在flutter裡一些常見的語法,畢竟我在剛開始寫flutter的時候對dart語法還不熟悉,因此導致我的程式碼很冗長且複雜,所以我會利用接下來幾天的鐵人賽把dart常用到的一些語法和operator介紹清楚。

Arrow syntax : =>

=>是一種快速建立function的方法,=>可以回傳右邊表示式的值

bool hasEmpty = aListOfStrings.any((s) {
  return s.isEmpty;
});

可以改寫成

bool hasEmpty = aListOfStrings.any((s) => s.isEmpty);

Cascades : ..

..可以對同一物件進行一連串的操作並且讓使用者不用再創建暫時的變數去儲存值

var button = querySelector('#confirm');
button?.text = 'Confirm';
button?.classes.add('important');
button?.onClick.listen((e) => window.alert('Confirmed!'));
button?.scrollIntoView();

可以改寫成

querySelector('#confirm')
  ?..text = 'Confirm'
  ..classes.add('important')
  ..onClick.listen((e) => window.alert('Confirmed!'))
  ..scrollIntoView();

Getters and setters

當你如果想要對屬性(property)做更多操作,甚至超過simple field的允許時,你可以透過定義getters and setters 去完成這些需求

class MyClass {
  int _aProperty = 0;

  int get aProperty => _aProperty;

  set aProperty(int value) {
    if (value >= 0) {
      _aProperty = value;
    }
  }
}
class MyClass {
  final List<int> _values = [];

  void addValue(int value) {
    _values.add(value);
  }

  // A computed property.
  int get count {
    return _values.length;
  }
}

以上的程式碼可以看到使用set和get可以獲得物件屬性的讀取或寫入權,基本上每個class裡的instance variable都有隱性的getter和setter,所以想對物件的屬性進行操作時不要忘記使用dart特有的getters and setters

參考資料:
https://dart.dev/codelabs/dart-cheatsheet
https://www.educative.io/answers/what-is-dart-cascade-notation
https://dev.to/newtonmunene_yg/dart-getters-and-setters-1c8f


上一篇
dart&flutter學習之旅-Day02
下一篇
dart&flutter學習之旅-Day04
系列文
dart&flutter學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言